﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NakedObjects;
using System.ComponentModel;

namespace RTC.Modelo.Entidades
{
    [DisplayName("Centro de Estudio")]
    public abstract class CentroEstudioExterno : Entidad
    {

        #region Atributos
        [Hidden]
        public virtual int Id { set; get; }

        [Title, MemberOrder(10), DisplayName("Nombre")]
        public virtual String Nombre { set; get; }

        [Optionally, DisplayName("Pais"), MemberOrder(20)]
        public virtual Pais Pais { set; get; }
        
        [Hidden]
        public virtual int IdRef { set; get; }

        #endregion

        [DisplayName("Crear Estudio")]
        public virtual EstudioExterno CreateEstudioExterno() {
            var estudio = Container.NewTransientInstance<EstudioExterno>();
            estudio.CentroEstudioExterno = this;
            return estudio;
        }


        #region EstudioExterno (collection)
        private ICollection<EstudioExterno> _EstudioExterno = new List<EstudioExterno>();

        [DisplayName("Estudios")]
        public virtual ICollection<EstudioExterno> EstudioExterno
        {
            get
            {
                return _EstudioExterno;
            }
            set
            {
                _EstudioExterno = value;
            }
        }

        public void RemoveFromEstudioExterno(EstudioExterno value)
        {
            if (_EstudioExterno.Contains(value))
            {
                _EstudioExterno.Remove(value);
            }
        }

        public IList<EstudioExterno> Choices0RemoveFromEstudioExterno()
        {
            return _EstudioExterno.ToList();
        }
        #endregion

        #region Comentario (collection)
        private ICollection<ComentarioCentroEstudioExterno> _Comentario = new List<ComentarioCentroEstudioExterno>();

        public virtual ICollection<ComentarioCentroEstudioExterno> Comentario
        {
            get
            {
                return _Comentario;
            }
            set
            {
                _Comentario = value;
            }
        }
        
        [DisplayName("Eliminar Comentario")]
        public void RemoveFromComentario(ComentarioCentroEstudioExterno value)
        {
            if (_Comentario.Contains(value))
            {
                _Comentario.Remove(value);
            }
        }

        public IList<ComentarioCentroEstudioExterno> Choices0RemoveFromComentario()
        {
            return _Comentario.ToList();
        }

        [DisplayName("Nuevo Comentario")]
        public virtual ComentarioCentroEstudioExterno CrearComentarioCentroEstudio()
        {
            ComentarioCentroEstudioExterno c = Container.NewTransientInstance<ComentarioCentroEstudioExterno>();
            c.CentroEstudioExterno = this;
            return c;
        }


        #endregion
        [Optionally,Disabled, DisplayName("Fecha Modificacion")]
        public virtual DateTime ModifiedDate { get; set; }

        [Hidden]
        protected override void SetModifiedDate()
        {
            ModifiedDate = DateTime.Now;
        }
    }
}
